package com.rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 王琦
 * 2021/10/31
 */
public class Send {
    public static void main(String[] args) {
        //连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.67.129");
        factory.setPort(5672);
        factory.setUsername("root");
        factory.setPassword("root");

        Connection connection = null;

        Channel channel = null;


        try {
            //创建连接
            connection = factory.newConnection();

            //连接通道
            channel = connection.createChannel();

            /**
             * 声明队列
             * 参数1 队列名称
             * 参数2 是否持久化
             * 参数3 是否排外 true表示排外
             * 参数4 是否自动删除 true表示自动
             * 参数5 队列属性设置
             */

            String queueName = "myQueue";
            channel.queueDeclare(queueName,true,false,true,null);

            String message ="测试消息";

            /**
             * 发送消息到MQ
             * 参数1 交换机名称
             * 参数2 消息的RoutingKey
             * 参数3 消息头 通常为null
             * 参数4 消息的数据
             */
            channel.basicPublish("",queueName,null,message.getBytes());

            System.out.println("消息发送成功" + message);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        } finally {

            if (channel == null){
                try {
                    channel.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (TimeoutException e) {
                    e.printStackTrace();
                }
            }

            if (connection != null){
                try {
                    connection.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
